
import junit.framework.TestCase;

public class SegmentListTest extends TestCase {
	Segment s1;
	Segment s2;
	Segment s3;
	Segment s4;
	GeneralSegment sl1;
	GeneralSegment sl2;
	GeneralSegment sl3;

	
	public void testUnion0() {
		s1 = new Segment(new Point(1,2), new Point(2,2));
		s2 = new Segment(new Point(3,2), new Point(4,2));
		s3 = new Segment(new Point(0,2), new Point(2,2));
		sl1 = new GeneralSegment();
		sl1.union(s1);
		sl1.union(s2);
		sl1.union(s3);
		assertTrue(sl1.size()==1);
		assertTrue(sl1.get(0).getP1().getX()==0);
		assertTrue(sl1.get(0).getP2().getX()==4);
		s4 = new Segment(new Point(2,2), new Point(7,2));
		sl1.union(s4);
		assertTrue(sl1.get(0).getP2().getX()==7);
	}
	
	public void testAdd() {
		s1 = new Segment(new Point(1,2), new Point(2,2));
		s2 = new Segment(new Point(3,2), new Point(4,2));
		s3 = s1.addition(s2);
		assertTrue(s3.getP1().getX()==4);
		assertTrue(s3.getP1().getY()==2);
		assertTrue(s3.getP2().getX()==6);
		assertTrue(s3.getP2().getY()==2);
		
		sl1 = new GeneralSegment();
		sl2 = new GeneralSegment();
		sl3 = new GeneralSegment();
		sl1.add(s1);
		sl2.add(s2);
		sl3 = sl1.addition(sl2);
		assertTrue(sl3.size()==1);
		assertTrue(sl3.get(0).getP1().getX()==4);
		assertTrue(sl3.get(0).getP1().getY()==2);
		assertTrue(sl3.get(0).getP2().getX()==6);
		assertTrue(sl3.get(0).getP2().getY()==2);
		sl3 = sl1.addition(sl2);
		assertTrue(sl3.get(0).getP1().getX()==4);
		assertTrue(sl3.get(0).getP1().getY()==2);
		assertTrue(sl3.get(0).getP2().getX()==6);
		assertTrue(sl3.get(0).getP2().getY()==2);
		sl1.add(s2);
		sl3 = sl1.addition(sl2);
		assertTrue(sl3.size()==1);
		assertTrue(sl3.get(0).getP1().getX()==4);
		assertTrue(sl3.get(0).getP1().getY()==2);
		assertTrue(sl3.get(0).getP2().getX()==8);
		assertTrue(sl3.get(0).getP2().getY()==2);

		sl1 = new GeneralSegment();
		s1 = new Segment(new Point(1,2), new Point(1,2));
		sl1.add(s1);
		sl3 = sl1.addition(sl2);
		assertTrue(sl3.get(0).getP1().getX()==4);
		assertTrue(sl3.get(0).getP1().getY()==2);
		assertTrue(sl3.get(0).getP2().getX()==5);
		assertTrue(sl3.get(0).getP2().getY()==2);
	}


}
